package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 违法分析服务
 */
public interface DubboVehicleViolationAnalysisService {

    /**
     * 统计违法数据量按小时统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByTimeDto &gt;
     */
    public ResultPojo statViolationsByTimeHour(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);

    /**
     * 统计违法数据量按天统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByTimeDto &gt;
     */
    public ResultPojo statViolationsByTimeDay(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);

    /**
     * 统计违法数据量按星期统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByTimeDto &gt;
     */
    public ResultPojo statViolationsByTimeWeek(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);

    /**
     * 统计违法数据量按月统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByTimeDto &gt;
     */
    public ResultPojo statViolationsByTimeMonth(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);


    /**
     * 统计违法数据量按违法类型统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByBehaviorDto &gt;
     */
    public ResultPojo statViolationsByBehavior(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);

    /**
     * 统计违法数据量按号牌类型统计
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByLicenseTypeDto &gt;
     */
    public ResultPojo statViolationsByLicenseType(String token, String beginDay, String endDay, String behavior, String isWorkingDay, String isOffsite, String isDisposed);

    /**
     * 取违法数据量最多的车牌
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @param num          取最多几条记录
     * @return &lt; ViolationByLicenseDto &gt;
     */
    public ResultPojo topViolationsByLicense(String token, String beginDay, String endDay, String licenseType, String behavior, String isWorkingDay, String isOffsite, String isDisposed, int num);

    /**
     * 取违法数据量最多的违法地点
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @param num          取最多几条记录
     * @return &lt; ViolationByAddrDto &gt;
     */
    public ResultPojo topViolationsByAddr(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed, int num);

    /**
     * 根据传入的违法地点 取出类似的域值
     *
     * @param vio_place
     * @return List<String>
     */
    public ResultPojo getSuggestByVioPlace(String token, String vio_place);


    /**
     * 求每小时违法数据量的均值
     *
     * @param beginDay     开始时间
     * @param endDay       结束时间
     * @param licenseType  号牌类型
     * @param licenseNum   号牌号码
     * @param behavior     违法类型
     * @param isWorkingDay 是否工作日
     * @param isOffsite    现场/非现场数据
     * @param isDisposed   是否已处理
     * @return &lt; ViolationByTimeDto &gt;
     */
    public ResultPojo statViolationsAvgHour(String token, String beginDay, String endDay, String licenseType, String licenseNum, String behavior, String isWorkingDay, String isOffsite, String isDisposed);


}
